﻿#include <iostream>
#include <assert.h>
#include <map>

#include "DateTime.h"
#include "TimeMeter.h"

//std::chrono::duration 表示一段时间
//std::chrono_literals  支持时间常量表示方法
//system_clock，系统时钟，用来处理真实的时间的，依赖于系统时间
//steady_clock 是稳定的时钟，用来计算时间间隔的
//high_resolution_clock 高精度时钟 和steady_clock没本质区别
//Time points表示具体的某个时间点。

int main()
{
    CDateTime currDt;

    CDateTime currDt2(time(nullptr));

    {
        DumpUseTime<cho::milliseconds> tmp("时间处理");
         //加两天60分钟
        for(auto i = 0; i < 10000; i++)
        {
            currDt2 += days_type(2) + cho::minutes(60);
        }        
    }

    CDateTime currDt3("2020-06-09 16:19:00");

    //计算时间差
    auto sub = currDt2 - currDt3;
    std::cout << sub.count() << "秒"<< std::endl;

    int days = cho::duration_cast<days_type>(sub).count();
    std::cout << days << "天"<< std::endl;
    
    
    std::cout << 1.0*days_type(days)/(days_type(2) + cho::minutes(60)) << "次"<< std::endl;

    using namespace std::chrono_literals;
    auto day = 24h;
    auto halfhour = 0.5h;

    currDt += day;

    std::cout << currDt.ToString()<< std::endl;
    std::cout << currDt2.ToString() << std::endl;
    return 0;
}